/*******************************************************************************
* Copyright (c) 2013 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.mongodb.core.test;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.util.JSON;
/**
* MongoDB ServerSide JavaScirpt
*
* @author hangum
*
*/
public class MongoTestServerSideJavascript {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
ConAndAuthentication testMongoCls = new ConAndAuthentication();
Mongo mongo = testMongoCls.connection(ConAndAuthentication.serverurl, ConAndAuthentication.port);
DB db = mongo.getDB("test");
createServerSideJavaScript(db);
updateServerSideJavaScript(db, "addNumbers", "update java script");
findAllServerSideJavaScript(db);
Object[] arryArgs ={25, 34};
evalServerSideJavaScript(db, "addNumbers2", arryArgs);
mongo.close();
try {
Thread.sleep(1);
} catch(Exception e) {}
}
/**
* java script 생성
* @param db
*/
private static void createServerSideJavaScript(DB db) {
// DBObject dbObject = (DBObject) JSON.parse("{'_id':'addNumbers', 'value':'function(x, y){ return x + y; }'}");
// db.getCollection("system.js").save(dbObject);
// DBObject dbObject = (DBObject) JSON.parse("{'_id':'addNumbers2', 'value':'function(x, y){ return x + y; }'}");
// db.getCollection("system.js").save(dbObject);
}
/**
* update java script
*
* @param db
* @param id
* @param content
*/
private static void updateServerSideJavaScript(DB db, String id, String content) {
DBObject dbFindObject = (DBObject) JSON.parse("{'_id':'" + id + "'}");
DBObject dbUpdateObject = (DBObject) JSON.parse("{'_id':'" + id + "', 'value':'" + content +"'}");
db.getCollection("system.js").findAndModify(dbFindObject, dbUpdateObject);
}
/**
* 모든 스크립트 리턴
* @param db
*/
private static void findAllServerSideJavaScript(DB db) {
DBCursor dbCursor = db.getCollection("system.js").find();
List<DBObject> lsitCursor = dbCursor.toArray();
for (DBObject dbObject : lsitCursor) {
System.out.println(dbObject.toString());
}
}
/**
* 자바스크립트 내용
*
* @param db
* @param jsName
* @return
*/
private static String findServerSideJavaScript(DB db, String jsName) {
DBObject findDbObject = new BasicDBObject();
findDbObject.put("_id", jsName);
DBCursor dbCursor = db.getCollection("system.js").find(findDbObject);
DBObject dbObject = dbCursor.next();
return dbObject.get("value").toString();
}
/**
* 자바스크립트 생성
*
* @param db
* @param name
* @param arryArgs
*/
private static void evalServerSideJavaScript(DB db, String name, Object[] arryArgs) {
Object dbObject = db.eval(findServerSideJavaScript(db, name), arryArgs);
System.out.println("[result]\t" + dbObject);
}
}